2017年10月10日

基础入门

摘要:讲解R的基本操作知识,了解R的特点、资源获取方式,并掌握基本的程序编写

  • R语言是什么
  • R和Rstudio的界面和基本操作
  • R数据分析的例子
  • R的学习方式与资料

R 语言的介绍

R 的下载和安装

  • R的官方网站
  • RStudio开发环境
  • 扩展包的安装和加载
    • install.packages("tidyverse")
    • library(tidyverse)
  • 安装扩展包相当于将某个工具买回来了;加载相当于带在身上了。

什么是 R

  • R 语言是一种业界盛行的数据分析编程语言
  • 理念就是快速、准确地把想法转化成软件
  • R 语言脱胎于 1980 年左右诞生的 S 语言
  • S语言是贝尔实验室统计研究部编制的一套完整的高级语言系统
  • 在1998年被美国计算机协会(ACM) 授予了“软件系统奖”
  • 1997 年 R 语言正式成为 GNU 项目
  • 2010年获得第一届“统计计算及图形奖”(美国统计协会)

R 语言的特点

  • 开源和免费
  • 功能强大且扩展性强
  • 与其它软件的交互能力强
  • 各类前沿的数据分析建模方法
  • 实现可重复性(Reproducible)分析
  • 适用于多操作系统的轻量化平台
  • 编程简单
  • 更新快速且文档完备

R 的整合能力

  • 数据:可连接数据库,如Oracle、MySQL
  • 运算:可调用C或Fortran函数进行底层运算
  • 应用:可作为运算引擎嵌入到JAVA开发的系统中(Rserve)
  • 网络:R与web整合部署(Rook, shiny)

R 可以做什么?

  • 统计计算与绘图(学术界)
  • 金融分析
  • 生命科学
  • 互联网数据挖掘
  • 社会化网络分析和可视化
  • task views

R工作界面介绍

R与Rstudio的关系

R的界面

  • 可以演示在console中进行运算

RStudio的界面

  • 演示在Rstudio的创建R代码文件
  • 撰写基本运算 ctrl+enter 运行

RStudio的界面设定

RStudio的界面介绍

R 的启动设置

改变默认语言(建议设定为英文)

  • (win)修改R安装目录下etc\Rconsole文件,language = en
  • (linux)在用户主目录中增加文件.RenvironLANGUAGE=en
  • (Mac) 在终端中输入 defaults write org.R-project.R force.LANG en_US.UTF-8 即可

查询当前工作目录getwd() 改变默认工作目录 setwd("D:/work")

注意Mac与Windows电脑路径表达差异

R数据分析例子:预期寿命与GDP

预期寿命与经济发展的关系

呈现全球国家的预期寿命(life expectancy)和人均GDP(GDP per capita)之间的关系. Hans Rosling曾经做个一个TED演讲。我们只做一个年份的。

#library(dplyr)
library(gganimate)
library(ggplot2)
library(readr)
# gapminder <- read_tsv("gapminderDataFiveYear.tsv")
gapminder <- read.csv("https://stat.duke.edu/~mc301/data/gapminder.csv")
gapminder_plot <- ggplot(gapminder) +
  aes(x = gdpPercap, y = lifeExp, colour = continent, size = pop,
      frame = year) +
  geom_point(alpha = 0.4) +
  scale_x_log10()
# gapminder_plot
gganimate(gapminder_plot, convert='gm convert', filename = "gapminder-gganimate.gif")

预期寿命与经济发展的关系

R数据分析例子:川普支持度

了解数据源

第一步:加载必要的包,设定

if (!require(hrbrthemes)) install.packages('hrbrthemes')
if (!require(rvest)) install.packages('rvest')  
library(tidyverse)

第二步:获取网页中的表格

对两个网页做同样的事情

list(
  Obama="http://m.rasmussenreports.com/public_content/politics/obama_administration/obama_approval_index_history",
  Trump="http://m.rasmussenreports.com/public_content/politics/trump_administration/trump_approval_index_history"
) %>% 
  map_df(~{
    read_html(.x) %>%
      html_table() %>%
      .[[1]] %>%
      tbl_df() %>%
      select(date=Date, approve=`Total Approve`, disapprove=`Total Disapprove`)
  }, .id="who") -> ratings

第三步:处理变量

data <- mutate_at(ratings, 
                  c("approve", "disapprove"), 
                  function(x) as.numeric(gsub("%", "", x,fixed=TRUE))/100) %>%
  mutate(date = lubridate::dmy(date)) %>%
  filter(!is.na(approve)) %>%
  group_by(who) %>%
  arrange(date) %>%
  mutate(dnum = 1:n()) %>%
  ungroup()
## Warning in (function (x) : NAs introduced by coercion
## Warning in (function (x) : NAs introduced by coercion

第四步:作图

ggplot(data,aes(dnum, approve, color=who)) +
  geom_hline(yintercept = 0.5, size=0.5) +
  geom_point(size=0.25) +
  scale_y_percent(limits=c(0,1)) +
  scale_color_manual(name=NULL, values=c("Obama"="#313695", "Trump"="#a50026")) +
  labs(x="Day in office", y="Approval Rating",
       title="Presidential approval ratings from day 1 in office",
       subtitle="Data was taken solely from Trump's favorite polling site (Ramussen)",
       caption="Data Source: \nCode: rasmussenreports.com") 

关于 piping and layering的说明

  • 管道操作符 %>%dplyr中的函数. 将管道的上端的结果作为下一行命令的首个输入元素.

  • ggplot2 中的 + 符号可以不断给图形添加图层(layerin)

R的学习方法与资料

学习 R 的方法

  • 适时做笔记,以记下一些重点或技巧
  • 学习时亲手键入代码,修改,理解其意义
  • 坚持练习,尝试利用身边的数据进行应用分析
  • 以tidyverse的风格进入

如何得到帮助

  • help.start() 打开帮助文档首页
  • help("foo")?foo 查看函数foo的帮助(引号可以省略)
  • help.search("foo")??foo 以foo为关键词搜索本地帮助文档
  • example("foo") 函数foo的使用示例(引号可以省略)
  • RSiteSearch("foo") 以foo为关键词搜索在线文档和邮件列表存档
  • apropos("foo", mode="function") 列出名称中含有foo的所有可用函
  • data() 列出当前已加载包中所含的所有可用示例数据集
  • vignette() 列出当前已安装包中所有可用的vignette文档
  • vignette("foo")为主题foo显示指定的vignette文档

学习 R 的资源(网络)

学习 R 的资源(书籍)

学习 R 的资源(书籍)

数据绘图:

  • 《ggplot2 Elegant Graphics for Data Analysis》

参考手册:

高级编程:

  • 《R Programming for Bioinformatics》
  • 《software for data analysis programming with R》

To be continued